<?php

namespace App\Common\Traits;

use PhpAmqpLib\Wire\AMQPTable;

trait AmqpTrait
{
    /**
     * 生成队列属性的配置，支持死信队列
     * @param string $arg1 想写什么信息都行
     * @param array $arg2
     *  [
     *     '想写什么信息都行, 比如声明是那条业务线的',
     *     '想写什么信息都行, 比如连接信息....',
     *  ]
     * @return AMQPTable[]
     */
    public static function getAmqpTable(string $arg1 = '', array $arg2 = [])
    {
        return [
            'queue_properties' => new AMQPTable([
                'arguments1'             => $arg1,
                'arguments2'             => $arg2,
                'x-ha-policy'            => ['S', 'all'],
                // 为队列设置死信交换
                'x-dead-letter-exchange' => config('amqp.dlx.exchange', 'dlx.exchange'),
                // 指定死信路由键 (消息被重发的时候, 使用的路由键)
                // 'x-dead-letter-routing-key' => config('amqp.dlx.', 'dlx.bindingkey'),
            ])
        ];
    }
}
